package main

import "fmt"

func main() {
	/*
		切片的截取
		s[n] 切片s中索引位置为n的项
		s[:]从切片s的索引位置0到len(s)-1处所获得的切片
		s[low:] 从切片s的索引位置low到len(s)-1处所获得的切片
		s[:high] 从切片s的索引位置0到high处所获得的切片,len=high
		s[low:high] 从切片s的索引位置low到high处所获得的切片,len=high-low
		s[low:high:max] 从切片s的索引位置low到high处所获得的切片,len=high-low,capacity=max-low
		len(s) 切片s的长度,总是<=cap(s)
		cap(s) 切片s的容量,总是>=len(s)
	*/

	array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	//s1 := array[:6:8]
	//fmt.Println(s1, len(s1), cap(s1)) //012345 6 8
	//s2 := array[5:]
	//fmt.Println(s2, len(s2), cap(s2)) //56789 5 5
	//s3 := array[:3]
	//fmt.Println(s3, len(s3), cap(s3)) //012 3 10
	//s4 := array[:]
	//fmt.Println(s4, len(s4), cap(s4)) //0123456789 10 10

	//s11 := array[2:5]
	//s11[2] = 100
	//fmt.Println(s11, array)
	//s22 := s11[2:6] //新切片依旧指向原底层数组
	//s22[3] = 200
	//fmt.Println(s22, array)

	//剔除某些索引元素
	s33 := append(array[:2], array[6:]...)
	fmt.Println(s33, len(s33), cap(s33))
}
